package bank;
//real scenarios for updating account - update account money, update account holder information
import java.util.List;
import model.Account;
//each method should get as input a unique identifier for the account
import model.AccountType;
import model.Person;
public interface BankProc {
/**
* @pre name != null
* @post Person != null
*/
Person addPerson(String name,AccountType type);
/**
* @pre id>0
* @post Person = null
*/
void removePerson(long id);
/**
* @pre Person != null
* @post Account != null
*/
Account addHolderAccount(long id, AccountType type);
/**
* @pre id>0 && Account != null
* @post Account = null
*/
void removeHolderAccount(long id, long accountId);
/**
* @pre Person != null && Account != null
* @inv sum >= 0
*/
long readAccountData(long id, long accountId);
/**
* @pre Person != null && Account != null && sum >= 0
* @inv sum >= 0
*/
void writeAccountData(long id, long accountId, long sum);
/**
* @pre
* @post
*/
List<Long> reportGenerator();
}